import axios from 'axios'

//不用default导出，因为可能不止导出一个实例

// //外部使用时调用instance方法，传入对应的config参数
// export function request1(config) {
//     //创建axios实例
//     const instance1 = axios.create({
//         baseURL: 'http://rest.apizza.net/mock/bd03586808d559f9ba6d865f27030be4/',
//         timeout: 5000
//     })


//     //发送正真的网络请求
//     instance1(config).then(res => {
//         // console.log(res);
//         config.success(res)
//     }).catch(err => {
//         // console.log(err);
//         config.failure(err)
//     })

// }

// export function instance2() {

// }


//=============================最终方案
export function request1(config) {
    return new Promise((resolve, reject) => {
        //创建axios实例
        const instance = axios.create({
            baseURL: 'http://rest.apizza.net/mock/bd03586808d559f9ba6d865f27030be4/',
            timeout: 5000
        })

        //发送正真的网路请求
        instance(config).then(res => { resolve(res) }).catch(err => { reject(err) })


        //axios拦截器
        instance.interceptors.request.use(config => {
            console.log(config);
            //拦截之后必须在此返回

            /**
             *      请求拦截的作用
             *      ·1、config中一些信息不符合服务器的要求
             *       2、每次发送网络请求时，都希望在界面中显示一个请求的图标
             *       3、某些网络请求比如登录token，必须携带一些特殊的信息
             */


            return config
        }), err => {
            console.log(err);
        }

    })
}